<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

  <title>Twisted Documentation</title>

</head>

<body>
  <h1>Twisted Documentation</h1>

  <ul class="toc">
    <li><a name="introduction">Introduction</a>

      <ul>
        <li><a href="vision.xhtml">Executive summary</a><br />
            Connecting your software - and having fun too!</li>
      </ul>
    </li>

    <li><a name="tutorials">Getting Started</a>

      <ul>
        <li><a href="servers.xhtml">Writing a TCP server</a><br />
            Basic network servers with Twisted.</li>

        <li><a href="clients.xhtml">Writing a TCP client</a><br />
            And basic clients.</li>

        <li><a href="trial.xhtml">Test-driven development with
            Twisted</a><br />
            Code without tests is broken by definition; Twisted makes it easy to test your network code.</li>

        <li>
          <a href="tutorial/index.xhtml">Tutorial: Twisted From
          Scratch</a>

          <ol>
            <li><a href="tutorial/intro.xhtml">The Evolution of
            Finger: building a simple finger service</a></li>

            <li><a href="tutorial/protocol.xhtml">The Evolution of
            Finger: adding features to the finger service</a></li>

            <li><a href="tutorial/style.xhtml">The Evolution of
            Finger: cleaning up the finger code</a></li>

            <li><a href="tutorial/components.xhtml">The Evolution of
            Finger: moving to a component based
            architecture</a></li>

            <li><a href="tutorial/backends.xhtml">The Evolution of
            Finger: pluggable backends</a></li>

            <li><a href="tutorial/web.xhtml">The Evolution of
            Finger: a clean web frontend</a></li>

            <li><a href="tutorial/pb.xhtml">The Evolution of Finger:
            Twisted client support using Perspective
            Broker</a></li>

            <li><a href="tutorial/factory.xhtml">The Evolution of
            Finger: using a single factory for multiple
            protocols</a></li>

            <li><a href="tutorial/client.xhtml">The Evolution of
            Finger: a Twisted finger client</a></li>

            <li><a href="tutorial/library.xhtml">The Evolution of
            Finger: making a finger library</a></li>

            <li><a href="tutorial/configuration.xhtml">The Evolution
            of Finger: configuration and packaging of the finger
            service</a></li>
          </ol>
        </li>

        <li><a href="quotes.xhtml">Setting up the TwistedQuotes
        application</a></li>

        <li><a href="design.xhtml">Designing a Twisted application</a></li>
      </ul>
    </li>

    <li><a name="events">Networking and Other Event Sources</a>

      <ul>
        <li><a href="internet-overview.xhtml">Twisted
        Internet</a><br />
            A brief overview of the <code>twisted.internet</code> package.</li>

        <li><a href="reactor-basics.xhtml">Reactor basics</a><br />
            The event loop at the core of your program.</li>

        <li><a href="ssl.xhtml">Using SSL in Twisted</a><br />
            Add some security to your network transport.</li>

        <li><a href="udp.xhtml">UDP Networking</a><br />
            Multicast too!</li>

        <li><a href="process.xhtml">Using processes</a><br />
            Launching sub-processes, the correct way.</li>

        <li><a href="defer.xhtml">Using Deferreds</a><br />
            Like callback functions, only a lot better.</li>

        <li><a href="gendefer.xhtml">Generating deferreds</a><br />
            More about Deferreds.</li>

        <li><a href="time.xhtml">Scheduling</a><br />
            Timeouts, repeated events, and more: when you want things to happen later.</li>

        <li><a href="threading.xhtml">Using threads</a><br />
            Running code in threads, and interacting with Twisted in a thread-safe manner.</li>

        <li><a href="producers.xhtml">Producers and Consumers: Efficient High-Volume Streaming</a><br />
            How to pause when buffers fill up.</li>

        <li><a href="choosing-reactor.xhtml">Choosing a reactor and
        GUI toolkit integration</a><br />
            GTK+, Windows, epoll() and more: use your GUI of choice, or a faster event loop.</li>
      </ul>
    </li>

    <li><a name="highlevel">High-Level Infrastructure</a>
      <ul>
        <li><a href="endpoints.xhtml">Getting Connected with Endpoints</a><br />
            Create configurable applications that support multiple transports (e.g. TCP and SSL).</li>

        <li><a href="components.xhtml">Interfaces and Adapters
        (Component Architecture)</a><br />
            When inheritance isn't enough.</li>

        <li><a href="cred.xhtml">Cred: Pluggable
        Authentication</a><br /> Implementing authentication and
        authorization that is configurable, pluggable and
        re-usable.</li>

        <li><a href="plugin.xhtml">Twisted's plugin architecture</a><br />
            A generic plugin system for extendable programs.</li>
      </ul>
    </li>

    <li><a name="deploying">Deploying Twisted Applications</a>

      <ul>
        <li><a href="basics.xhtml">Helper programs and scripts
        (twistd, ..)</a><br />
            <code>twistd</code> lets you daemonize and run your
            application.</li>

        <li><a href="application.xhtml">Using the Twisted Application
             Framework</a><br />
             Writing code that <code>twistd</code> can run.</li>

        <li><a href="tap.xhtml">Writing Twisted Application Plugins
        for twistd</a><br />
            More powerful <code>twistd</code> deployment method.</li>
      </ul>
    </li>

    <li><a name="utilities">Utilities</a>

      <ul>
        <li><a href="logging.xhtml">Logging</a><br />
            Keep a record of what your application is up to.</li>

        <li><a href="constants.xhtml">Symbolic constants</a><br />
            enum-like constants.</li>

        <li><a href="rdbms.xhtml">Twisted RDBMS support with
            adbapi</a><br />
            Using SQL with your relational database via DB-API adapters.</li>

        <li><a href="options.xhtml">Parsing command-line arguments</a><br />
            The command-line argument parsing used by <code>twistd</code>.</li>

        <li><a href="dirdbm.xhtml">Using Dirdbm: Directory-based Storage</a><br />
            A simplistic way to store data on your filesystem.</li>

        <li><a href="testing.xhtml">Tips for writing tests for Twisted
        code using Trial</a><br />
            More information on writing tests.</li>

        <li><a href="sendmsg.xhtml">Extremely Low-Level Socket Operations</a><br />
            Using wrappers for sendmsg(2) and recvmsg(2).</li>
      </ul>
    </li>

    <li><a name="amp">Asynchronous Messaging Protocol (AMP)</a>

      <ul>
        <li><a href="amp.xhtml">Asynchronous Messaging Protocol Overview</a><br />
            A two-way asynchronous message passing protocol, for when HTTP isn't good enough.</li>
      </ul>
    </li>

    <li><a name="pb">Perspective Broker</a>
      <ul>
        <li><a href="pb.xhtml">Twisted Spread</a><br />
            A remote method invocation (RMI) protocol: call methods on remote objects.</li>

        <li><a href="pb-intro.xhtml">Introduction to Perspective
        Broker</a></li>

        <li><a href="pb-usage.xhtml">Using Perspective
        Broker</a></li>

        <li><a href="pb-clients.xhtml">Managing Clients of
        Perspectives</a></li>

        <li><a href="pb-copyable.xhtml">Passing Complex
        Types</a></li>

        <li><a href="pb-cred.xhtml">Authentication with Perspective
        Broker</a></li>

        <li><a href="pb-limits.xhtml">PB Limits</a></li>
      </ul>
    </li>

    <li><a name="appendix">Appendix</a>

      <ul>
        <li><a href="python3.xhtml">Porting to Python 3</a></li>

        <li><a href="glossary.xhtml">Glossary</a></li>

        <li class="ignoretoc"><a href="debug-with-emacs.xhtml">Tips
        for debugging with emacs</a></li>
      </ul>
    </li>
  </ul>

</body>
</html>
